#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/fb.h>
#include "display_font.h"


int main()
{
    FT_Library library;
    FT_Face face;
    FT_Error error;

    printf("开始字体显示测试...\n");

    // 初始化 Framebuffer
    if (init_framebuffer() != 0)
    {
        return -1;
    }

    // 清屏为黑色
    clear_screen(RGB888toARGB8888(0, 0, 0));
    printf("屏幕已清空\n");

    // 初始化 Freetype
    error = FT_Init_FreeType(&library);
    if (error)
    {
        printf("Freetype初始化失败: %d\n", error);
        cleanup_framebuffer();
        return -1;
    }

    // 加载字体
    error = FT_New_Face(library, "/root/fonts/msyh.ttc", 0, &face);
    if (error)
    {
        printf("字体加载失败: %d\n", error);
        FT_Done_FreeType(library);
        cleanup_framebuffer();
        return -1;
    }

    // 设置字体大小
    FT_Set_Pixel_Sizes(face, 0, 35);

    // 显示不同文字
    printf("显示文字到屏幕...\n");

    // 显示英文
    display_text(face, 50, 100, L"Hello GEC6818!", RGB888toARGB8888(255, 255, 0));

    // 显示中文
    display_text(face, 50, 150, L"嵌入式开发板", RGB888toARGB8888(0, 255, 255));

    // 显示数字和符号
    display_text(face, 50, 200, L"1234567890 !@#$%", RGB888toARGB8888(255, 0, 255));

    printf("文字显示完成！\n");

    // 保持显示5秒
    sleep(5);

    // 清理资源
    FT_Done_Face(face);
    FT_Done_FreeType(library);
    cleanup_framebuffer();

    printf("测试完成！\n");
    return 0;
}